package io.gitee.devaper.starlight.common.holder

/**
 * Holder类的父接口, 所有Holder类都需要实现该接口
 *
 * 每个Holder都是一个单例对象, 可以在任何地方来使用, 通常用来暴露容器中的一些组件
 */
interface Holder<T> {

    /**
     * 初始化Holder中持有的数据
     */
    fun init(data: T)

    /**
     * 获取Holder中持有的数据
     *
     * 如果Holder还未初始化, 那么实现类可以考虑自行构建并返回一个可用对象, 避免出现异常
     */
    fun get(): T

}